package decorator_pattern.ex1;

/**
 * 装饰器类，扩展了Troll类的功能。
 * @author 申书航
 * @version 1.0
 */
public class DecoratorTroll implements Troll {

    private Troll troll;

    /**
     * 构造函数，接收一个Troll对象。
     * @param troll 被装饰的Troll对象
     */
    public DecoratorTroll(Troll troll) {
        this.troll = troll;
    }

    /**
     * 攻击目标Troll并返回攻击值。
     * @param target 目标Troll
     * @return 攻击值
     */
    @Override
    public int attack(Troll target) {
        return troll.attack(target);
    }

    /**
     * 受到攻击时处理伤害值。
     * @param hitVal 伤害值
     */
    @Override
    public void hit(int hitVal) {
        troll.hit(hitVal);
    }

    /**
     * 获取当前攻击力。
     * @return 当前攻击力
     */
    @Override
    public int getAttackPower() {
        return troll.getAttackPower();
    }

    /**
     * 设置新的攻击力。
     * @param ap 新的攻击力
     */
    @Override
    public void setAttackPower(int ap) {
        troll.setAttackPower(ap);
    }

    /**
     * 获取当前防御力。
     * @return 当前防御力
     */
    @Override
    public int getDefensePower() {
        return troll.getDefensePower();
    }

    /**
     * 设置新的防御力。
     * @param dp 新的防御力
     */
    @Override
    public void setDefensePower(int dp) {
        troll.setDefensePower(dp);
    }

    /**
     * 获取当前生命值。
     * @return 当前生命值
     */
    @Override
    public int getHp() {
        return troll.getHp();
    }
}
